package main

import "fmt"

func main() {
	//方式1：让切片引用一个创建好的数组
	var intArr [5]int32 = [...]int32{1, 2, 3, 4, 5}
	intSlice := intArr[1:3]                    //从intArr索引第1位到索引第2位 共2个元素
	fmt.Println("intSlice的元素是：", intSlice)     //[2 3]
	fmt.Println("intSlice的长度：", len(intSlice)) //2
	fmt.Println("intSlice的容量：", cap(intSlice)) //4
	//注意切片是引用，因此修改切片可以修改原数组
	intSlice[0] = 100
	fmt.Println("intSlice的元素是：", intSlice) //100 3
	fmt.Println("intArr的元素是：", intArr)     //1 100 3 4 5

	//方式2：通过make
	//语法: var 切片名 []类型=make([]类型,len,[cap]) 注意cap可选，若提供，则cap必须>=len
	var slice []int32 = make([]int32, 2, 3)
	fmt.Println("slice的元素是：", slice)     //[0 0]
	fmt.Println("slice的长度：", len(slice)) //2
	fmt.Println("slice的容量：", cap(slice)) //3

	//方式3：直接指定数组
	var slice2 []string = []string{"小明", "小红", "小白"}
	fmt.Println("slice2的元素是：", slice2)     //[0 0]
	fmt.Println("slice2的长度：", len(slice2)) //3
	fmt.Println("slice2的容量：", cap(slice2)) //3   注意容量和长度一致
}
